/** 
 * @file ajoutArbre.h
 * @brief Fichier d'entête du module ajoutArbre.
 *
 * @author Rachid Delory, Mamadou Keita, Florian Bernard 
 */

#ifndef H_AJOUTARBRE_H
#define H_AJOUTARBRE_H

/* *********************************************************************                                                                  

                       Librairies de AjoutArbre

 ********************************************************************* */
#include <gtk/gtk.h>
#include "ajoutPanel.h"
#include "gtkArbre.h"
#include "../core/arbre.h"
#include "../core/oeuvre.h"
#include "../core/listefichier.h"

struct sAjoutArbre
{
  GtkWidget *vbox;
  GtkWidget *gArbre;
  GtkArbre *gtkArbre;
};

typedef struct sAjoutArbre AjoutArbre;
/* *********************************************************************

   Fonctions de la structure AjoutArbre

 ********************************************************************* */

/**
 * @fn AjoutArbre * creer_GAArb();
 * @brief Crée l'arbre pour l'ajout. Il ne comportera qu'une seule colonne, celle du type
 * 
 * @return la structure AjoutArbre
 */
AjoutArbre * creer_GAArb(AjoutPane *pane, GtkArbre *gtkArbre);

/**
 * @fn GtkWidget * getContainer_GAArb(AjoutArbre *aArbre);
 * @brief Returne le conteneur pour l'affichage
 *
 * @param[in,out] aArbre
 */
GtkWidget *getContainer_GAArb(AjoutArbre *aArbre);

/**
 * @fn void detruire_GAArb(AjoutArbre *aArbre);
 * @brief Returne l'arbre
 *
 * @param[in,out] aArbre
 */
void detruire_GAArb(AjoutArbre **aArbre);

/**
 * @fn gboolean titreChanged(GtkWidget *widget, GdkEvent *event, gpointer user_data);
 * @brief fonction de mise à jour du text de la selection de l'arbre
 *
 */
gboolean titreChanged(GtkWidget *widget, GdkEvent *event, gpointer user_data);

/**
 * @fn gboolean typeChanged_AArb(GtkWidget *widget, gpointer user_data);
 * @brief fonction de mise à jour du type de la selection de l'arbre
 *
 */
void typeChanged_AArb(GtkWidget *widget, gpointer user_data);

/**
 * @fn Arbre * getArbre_GAArb(AjoutArbre *aArbre);
 * @brief Fonction permettant la récupération de l'arbre
 *
 * @param aArbre
 * @return Arbre
 */
Arbre *getArbre_GAArb(AjoutArbre *aArbre);

#endif
